Field of the Invention
The present disclosure relates to the field of computer animation and, in particular, to techniques for efficient rendering of volumetric elements (also referred to herein as “voxels”).
Description of the Related Art
Today, many graphic processing units (GPUs) are configured to host all of the computations necessary to generate high-quality graphics on computer screens. Doing so has the advantage of leaving a computing device's central processing unit (CPU) available for other tasks. For instance, many modern GPUs can render graphics by processing numerous programs called “shaders.” Generally speaking, a shader is a specialized computer program configured to perform an operation for rendering a two-dimensional (2D) or three-dimensional (3D) graphic. Additionally, realistic scenes may be generated by rendering geometry with various virtual materials that are controlled by the shaders. For instance, such materials could be represented in the program code of a given shader, which processes a variety of inputs (including texture maps, light locations, and other data) to generate the visual result. Through the use of shaders, developers can control virtually any graphics or graphic effect by incorporating different vertex shading, primitive shading, and pixel shading effects.
Currently, rendering complex 3D graphic scenes in real-time may consist of supporting parallel-architecture processors in conjunction with customized logic units to hide latency by distributing the overhead across multiple parallel units. These pipelines are designed around a primitive rasterization pipeline. Such a primitive rasterization pipeline can convert (or rasterize) a collection of projected pixel representations, when provided a high-level 3D description of a collection of linear primitives (e.g., points, line segments, triangles, etc.). In many existing 3D hardware technologies, shaders are used to define an operation(s) performed at certain stages of the rendering process. Examples of such operations include, without limitation, transformations of the vertices of the primitives and computing the color of a single pixel on the screen. Such shaders may also define a small amount of work to be performed in large parallel execution batches. Such parallel execution batches may be distributed across many specialized processors on a GPU.